231. 2 的幂

231. 2 的幂

Similar Question

leading to the advanced question

Solution Tips

方案一: 循环 or 递归

/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    // 如果是2的幂次方, 二进制表示只会有一个 1, 其余都是 0
    // 没有方便的转换二进制的api, 只要除以2没有余数不就行了?
    if (n == 1) { return true; }
    let rest = n;
    // while (rest %2 === 0 && rest > 0) {
    while (rest !== 1) {
        rest = rest / 2;
    }

    return rest === 1;
};

console.log(isPowerOfTwo(64));
console.log(isPowerOfTwo(65));

方案二: 位运算